#ifndef IGraphicsDeviceService_h
#define IGraphicsDeviceService_h

#include <Defines.h>
#include <CSharpPropertyMethods.h>

// Riccsson includes.
#include <System/Object.h>
#include <System/Generic/EventHandler.h>
#include <System/EventArgs.h>

namespace Riccsson
{
	namespace Xna
	{
		namespace Framework
		{
			namespace Graphics
			{
                // Forward declerations.
                class GraphicsDevice;

                interface IGraphicsDeviceService
                {
				    public: virtual PROP3_GET(GC_WEAK<GraphicsDevice>, graphicsDevice) = 0;
				    private: PROP3_SET(GC_WEAK<GraphicsDevice>, graphicsDevice) {throw;}
        
				    public: event<Void, Riccsson::System::Generic::EventHandler<Riccsson::System::EventArgs>> DeviceCreated;
                    public: event<Void, Riccsson::System::Generic::EventHandler<Riccsson::System::EventArgs>> DeviceDisposing;
                    public: event<Void, Riccsson::System::Generic::EventHandler<Riccsson::System::EventArgs>> DeviceReset;
                    public: event<Void, Riccsson::System::Generic::EventHandler<Riccsson::System::EventArgs>> DeviceResetting;
                };
			}
		}
	}
}

#endif
